iT邦幫忙

2023 iThome 鐵人賽

DAY 15
1
自我挑戰組

Spring、Spirng MVC 及 Spring Boot 自主學習旅途!系列 第 15

Day 15 : ModelAttribute、ResponseBody、 RequestBody 和 RequestParam

  • 分享至 

  • xImage
  •  

@ModelAttribute@ResponseBody@RequestBody@RequestParam 是 Spring 框架中用於處理Controller方法和請求主體的註解:

ModelAttribute

  • 用於將數據從請求參數或其他來源封裝為指定物件。
@Controller
public class MyController {

		@RequestMapping("/hello")
    public ModelAndView initHello(@ModelAttribute Model model) {
			  ModelAndView modelAndView = new ModelAndView("helloView");
        modelAndView.addObject("message", model.message);
        return modelAndView;
    }
}

ResponseBody

  • 將方法的返回值直接發送給客戶端,而不是渲染為視圖。通常用於創建 RESTful 服務,返回 JSON 或其他數據格式。
@Controller
public class MyController {

		@RequestMapping("/hello")
		@ResponseBody
    public ModelResp sendHello(@RequestBody Model model) {
			  ModelResp modelResp = new ModelResp();
        ModelResp.setMessage("message", model.message);
        return modelResp;
    }
}

RequestBody

  • 用於從請求主體中提取數據,通常用於接收客戶端發送的 JSON 或其他格式的數據,並將其映射到方法參數上。
@Controller
public class UserController {

		@RequestMapping("/hello")
		@ResponseBody
    public ModelResp sayHello(@RequestBody Message message) {
			  ModelResp modelResp = new ModelResp();
        ModelResp.setMessage("message", message.msg);
        return modelResp;
    }
}

RequestParam

  • 於從 HTTP 請求中獲取請求參數的註解,用於將請求參數的值綁定在方法的參數上,通常會用於Get請求。
@Controller
public class UserController {

		@RequestMapping("/hello")
		@ResponseBody
    public ModelResp sayHello(@RequestParam("message") String message) {
			  ModelResp modelResp = new ModelResp();
        ModelResp.setMessage("message", message);
        return modelResp;
    }
}

整理:

  • @ModelAttribute 用於在方法中添加默認用戶數據到模型,以供視圖使用。
  • @ResponseBody 用於在方法中將用戶對象直接作為 JSON 響應發送給客戶端。
  • @RequestBody 用於在方法中從請求主體中提取 JSON 數據進行處理。
    • @RequestBody 用於在方法中從請求主體中提取參數數據進行處理。
這些註解的選擇取決於你的需求。
  • 如果你需要渲染視圖並添加數據到模型,使用 @ModelAttribute
  • 如果我們需要建立 RESTful 服務並直接返回數據,使用 @ResponseBody
  • 如果你需要接收請求主體中的數據,使用 @RequestBody
  • 如果你需要接收請求主體中的參數數,使用 @RequestParam

參考資料

https://docs.spring.io/spring-framework/reference/web/webflux/controller/ann-methods/requestbody.html
https://docs.spring.io/spring-framework/reference/web/webflux/controller/ann-methods/responsebody.html
https://docs.spring.io/spring-framework/reference/web/webflux/controller/ann-methods/modelattrib-method-args.html
https://docs.spring.io/spring-framework/reference/web/webflux/controller/ann-methods/requestparam.html


上一篇
Day 14 : RequestMapping、GetMapping 和 PostMapping
下一篇
Day 16 : MVC 的 V,網頁呈現
系列文
Spring、Spirng MVC 及 Spring Boot 自主學習旅途!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言